域名系统DNS


DNS(Domain Name System):主机的一种标识方式是用它的主机名(hostname),主机也可以使用所谓的IP地址进行标识,人们喜欢便于记忆的主机名标识方法,而路由器喜欢定长的,有着层次结构的IP地址,所以我们需要一种能进行主机名到IP地址转换的目录服务,以满足不同的需求,这就是DNS,DNS协议运行在UDP上,使用53号端口


早在1983,因特网就开始使用层次结构的命名树作为主机的名字(即域名),并使用分布式的域名系统DNS;DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高;由于DNS是分布式系统,所以单个计算机出现故障也不会妨碍整个系统的正常运行

域名的结构由若干个分量组成,各分量之间用“点”隔开,分别代表不同级别的域名

  • 每一级域名由不超过63个字符的数字和英文组成,不区分大小写
  • 级别低的在左边,级别高的在右边
  • 完整域名不超过255个字符
  • 各级域名由上一级域名管理机构管理,最高级的顶级域名由因特网与数字地址分配机构ICANN管理

  • 顶级域名分为以下三类

    • 国家顶级域名nTLD

    • 通用顶级域名gTLD:

      最常见的有七个:com(公司企业),net(网络服务机构),org(非营利性组织),int(国际组织),edu(美国教育结构),gov(美国政府部门),mil(美国军事部门)

    • 反向域arpa:用于反向域名解析,即IP->域名

  • 在国家顶级域名下注册的二级域名由该国家自行确定

  • 我国将二级域名分为

    • 类别域名

      共七个:ac(科研机构),com(工、商、金融等企业),edu(教育机构),gov(政府部门),net(提供网络服务的机构),mil(军事机构),org(非营利性组织)

    • 行政区域名: 共34个省34个


域名服务器分为以下四种

  • 根域名服务器:共13个,每个服务器实际上是由许多分布世界各地的计算机构成的服务器集群,当本地域名服务器发送查询请求时,路由器就把报文转发到离这个DNS客户最近的一个根域名服务器。根域名服务器通常不对域名进行解析,而是返回该域名所属顶级域名服务器的IP地址
  • 顶级域名服务器:管理该顶级域名的所有二级域名。收到DNS查询请求时就给出相应的回答,这个回答可能是下一级权限域名服务器的IP地址
  • 权限域名服务器:负责管理某个区的域名,每个主机的域名都必须在某个域名权限服务器注册登记。权限域名服务器还知道其下级域名服务器的地址。权限域名服务器知道其管辖的域名与IP地址的映射关系
  • 本地域名服务器:当一个主机发送DNS请求报文,这个报文首先被送到该主机的本地域名服务器。本地域名服务器转发到上述的域名服务器的等级结构中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。

域名解析的过程

  • 由于递归查询对于被查询的域名服务器负担太大,通常从主机到本地域名服务器之间的查询是递归查询,而其余查询是迭代查询

  • 为了提高DNS的查询效率,并减轻根域名服务器的负担和减少因特网上的DNS查询报文数量,在域名服务器中广泛的使用了高速缓存用来存放最近查询过的域名以及何处获得域名映射信息的记录

  • 由于域名和IP地址的映射关系不是不变的,域名服务器应该为每项内容设计计时器并删除超出合理时间的项
  • 用户主机中也使用了高速缓存存放最近使用的域名,这样只有在缓存中查找不到域名时才想域名服务器查询。同理也需要保持主机的高速缓存中内容的正确性